Musical Instrument Digital Interface (MIDI) is a format for the creation, communication and playback of audio sounds, such as music, speech, tones, alerts, and the like. A device that supports the MIDI format may store sets of audio information that can be used to create various “voices.” Each voice may correspond to a particular sound, such as a musical note by a particular instrument. For example, a first voice may correspond to a middle C as played by a piano, a second voice may correspond to a middle C as played by a trombone, a third voice may correspond to a D# as played by a trombone, and so on. In order to replicate the sounds played by various instruments, a MIDI compliant device may include a set of information for voices that specify various audio characteristics, such as the behavior of a low frequency oscillator, effects such as vibrato, and a number of other audio characteristics that can affect the perception of different sounds. Almost any sound can be defined, conveyed in a MIDI file, and reproduced by a device that supports the MIDI format.
A device that supports the MIDI format may produce a musical note (or other sound) when an event occurs that indicates that the device should start producing the note. Similarly, the device stops producing the musical note when an event occurs that indicates that the device should stop producing the note. An entire musical composition may be coded in accordance with the MIDI format by specifying events that indicate when certain voices should start and stop. In this way, the musical composition may be stored and transmitted in a compact file format according to the MIDI format.
MIDI is supported in a wide variety of devices. For example, wireless communication devices, such as radiotelephones, may support MIDI files for downloadable ringtones or other audio output. Digital music players, such as the “iPod” devices sold by Apple Computer, Inc and the “Zune” devices sold by Microsoft Corp. may also support MIDI file formats. Other devices that support the MIDI format may include various music synthesizers such as keyboards, sequencers, voice encoders (vocoders), and rhythm machines. In addition, a wide variety of devices may also support playback of MIDI files or tracks, including wireless mobile devices, direct two-way communication devices (sometimes called walkie-talkies), network telephones, personal computers, desktop and laptop computers, workstations, satellite radio devices, intercom devices, radio broadcasting devices, hand-held gaming devices, circuit boards installed in devices, information kiosks, video game consoles, various computerized toys for children, on-board computers used in automobiles, watercraft and aircraft, and a wide variety of other devices.
A number of other types of audio formats, standards and techniques have also been developed. Other examples include standards defined by the Motion Pictures Expert Group (MPEG), windows media audio (WMA) standards, standards by Dolby Laboratories, Inc., and quality assurance techniques developed by THX, ltd., to name a few. Moreover, many audio coding standards and techniques continue to emerge, including the digital MP3 standard and variants of the MP3 standard, such as the advanced audio coding (AAC) standard used in “iPod” devices. Various video coding standards may also use audio coding techniques, e.g., to code multimedia frames that include audio and video information.
One important feature of the MIDI format is its ability to store data related to the articulation of a particular note. The articulation data includes information about sound effects, such as a vibrato or a tremolo, which can help to emulate the sound of an acoustic instrument. A device that utilizes MIDI may implement these effects using a combination of low frequency oscillators and envelope generators. Typically, a low frequency oscillator (LFO) can be used to generate a periodic low-frequency wave to modulate the pitch, amplitude, and frequency of a particular note. In order to generate a low-frequency wave that operates within acceptable tolerance ranges, numerous and complex calculations are required, which can require the storage of a number of parameters and the utilization of a significant amount of chip area.